package luo.utils;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

/**
 * @Description:
 * @Author:let_free
 * @Date:2024/9/17/16:16
 **/
public class NameUtils {
    /**
     * @param radarName Z_RADR_I_Z9311_20220611135401_O_DOR_SAD_CAP_FMT.bin.bz2
     * @return java.lang.String 202206112154
     * @description 传递雷达基文件名称  得到未来八个小时之后的时间戳
     * @author let_free
     * @date 2024/10/1 12:39
     */
    public static String getCurrentName(String radarName) {
        String timeStamp = radarName.split("_")[4].substring(0, 12);
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyyMMddHHmm");
        LocalDateTime dateTime = LocalDateTime.parse(timeStamp, formatter);
        return dateTime.plusHours(8).format(formatter);
    }

    public static List<String> getFuture20Name(String prefix, String lastName, String format, Integer len) throws ParseException {
        String datePart = lastName.substring(0, 8);  // 年月日
        String timePart = lastName.substring(8);     // 小时和分钟

        // 创建日期格式化对象
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmm");

        // 将日期和时间部分转换为 Calendar 对象
        Calendar lastNpyDateTime = Calendar.getInstance();
        lastNpyDateTime.setTime(dateFormat.parse(datePart + timePart));

        // 初始化文件名列表
        List<String> futureNpyFilenames = new ArrayList<>();

        // 添加未来两个小时（每隔六分钟）的 npy 文件名
        for (int i = 1; i <= len; i++) {  // 从 1 开始，因为已经有一个时间点
            // 计算未来时间
            Calendar futureTime = (Calendar) lastNpyDateTime.clone();
            futureTime.add(Calendar.MINUTE, 6 * i);

            // 格式化新的文件名
            String newFilename = String.format("%s/%s.%s", prefix, dateFormat.format(futureTime.getTime()), format);
            futureNpyFilenames.add(newFilename);
        }

        return futureNpyFilenames;
    }
}
